package com.ruoyi.cms.service.impl;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.github.pagehelper.PageHelper;
import com.ruoyi.cms.domain.CmsCatalog;
import com.ruoyi.cms.domain.HomeCatalog;
import com.ruoyi.cms.service.ICmsCatalogService;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.system.service.ISysConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.cms.mapper.CmsNewsMapper;
import com.ruoyi.cms.domain.CmsNews;
import com.ruoyi.cms.service.ICmsNewsService;

/**
 * 网站内容Service业务层处理
 * 
 * @author ruoyi
 * @date 2024-02-01
 */
@Service
public class CmsNewsServiceImpl implements ICmsNewsService 
{
    @Autowired
    private CmsNewsMapper cmsNewsMapper;

    @Autowired
    private ISysConfigService configService;

    @Autowired
    private ICmsCatalogService cmsCatalogService;


    /**
     * 查询首页的栏目信息
     *
     * @return 栏目信息
     */
    public List<HomeCatalog> ListHomeCatalog(){
        List<HomeCatalog> list = new ArrayList<>();
        String homeCatalog = configService.selectConfigByKey("site.home.catalog");
        String[] catalogList = homeCatalog.split(",");
        CmsNews nc = new CmsNews();
        for(String cata:catalogList){
            HomeCatalog hc = new HomeCatalog();
            String[] cataInfo = cata.split(":");
            CmsCatalog catalog = cmsCatalogService.selectCmsCatalogByCode(cataInfo[0]);
            if(catalog == null) {
                continue;
            }
            hc.setCatalog(catalog);
            hc.setCode(catalog.getCode());
            int limit = cataInfo.length == 2 ? Integer.parseInt(cataInfo[1]) : 10;
            nc.setCataId(catalog.getId());
            PageHelper.startPage(1, limit, "update_time DESC");
            hc.setList(cmsNewsMapper.selectCmsNewsList(nc));
        }
        return list;
    }

    /**
     * 查询网站内容
     * 
     * @param id 网站内容主键
     * @return 网站内容
     */
    @Override
    public CmsNews selectCmsNewsById(Long id)
    {
        return cmsNewsMapper.selectCmsNewsById(id);
    }

    /**
     * 查询网站内容列表
     * 
     * @param cmsNews 网站内容
     * @return 网站内容
     */
    @Override
    public List<CmsNews> selectCmsNewsList(CmsNews cmsNews)
    {
        return cmsNewsMapper.selectCmsNewsList(cmsNews);
    }

    /**
     * 新增网站内容
     * 
     * @param cmsNews 网站内容
     * @return 结果
     */
    @Override
    public int insertCmsNews(CmsNews cmsNews)
    {
        cmsNews.setCreateTime(new Date());
        cmsNews.setUpdateTime(cmsNews.getCreateTime());
        cmsNews.setUpdateBy(SecurityUtils.getUsername());
        cmsNews.setCreateBy(cmsNews.getUpdateBy());
        return cmsNewsMapper.insertCmsNews(cmsNews);
    }

    /**
     * 修改网站内容
     * 
     * @param cmsNews 网站内容
     * @return 结果
     */
    @Override
    public int updateCmsNews(CmsNews cmsNews)
    {
        cmsNews.setUpdateTime(DateUtils.getNowDate());
        cmsNews.setUpdateBy(SecurityUtils.getUsername());
        return cmsNewsMapper.updateCmsNews(cmsNews);
    }

    /**
     * 批量删除网站内容
     * 
     * @param ids 需要删除的网站内容主键
     * @return 结果
     */
    @Override
    public int deleteCmsNewsByIds(Long[] ids)
    {
        return cmsNewsMapper.deleteCmsNewsByIds(ids);
    }

    /**
     * 删除网站内容信息
     * 
     * @param id 网站内容主键
     * @return 结果
     */
    @Override
    public int deleteCmsNewsById(Long id)
    {
        return cmsNewsMapper.deleteCmsNewsById(id);
    }
}
